package juc.completablefuture.methods.dependencyrelationship;

/**
 * @ClassName ThenComposeExample
 * @PackageName completablefuture.methods
 * @projectName myThread
 * @Description 
 * @Author games
 * @Date 2025/8/27 下午4:38
 * @Version 1.0
 */

import java.util.concurrent.CompletableFuture;

/**
 * 作用：用来连接两个有依赖关系的任务，结果由第二个任务返回。
 * 返回值：一个新的 CompletableFuture，其结果是第二个任务的输出。
 */
public class ThenComposeExample {
    /**
     * 主方法，演示CompletableFuture的链式调用和异步处理
     * @param args 命令行参数，本程序未使用
     */
    public static void main(String[] args) {
        // 创建一个CompletableFuture实例，异步返回"Hello"
        // 然后使用thenCompose将第一个结果与另一个异步操作组合
        CompletableFuture<String> cf = CompletableFuture.supplyAsync(() -> "Hello")
                .thenCompose(s -> CompletableFuture.supplyAsync(() -> s + " World"));

        // 当前面的异步操作完成后，接受结果并打印
        // 输出结果为: Hello World
        cf.thenAccept(System.out::println); // 输出: Hello World
    }
}